package com.example.demo.customer;

import com.example.demo.exception.ApiRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.Collections;
import java.util.List;

@RequestMapping(path = "api/v2/customers")
@RestController
public class CustomerControllerV2 {

    private final CustomerService customerService;
//            =new CustomerService();

//    @GetMapping
//    Customer getCustomer() {
//        return new Customer(1L, "张学友");
//    }
//    public CustomerController(){
//        customerService = new CustomerService();
//    }
    @Autowired
    public CustomerControllerV2(CustomerService customerService){
       this.customerService =  customerService;
    }




    @GetMapping
    List<Customer> getCustomers() {
            return customerService.getCustomers(

            );}

              @GetMapping(path = "{customerId}")
                      Customer getCustomer(@PathVariable("customerId") Long id){
      return customerService.getCustomer(id);
        }
    @GetMapping(path = "{customerId}/exception")
    Customer getCustomerException(@PathVariable("customerId") Long id){
        throw new ApiRequestException(
                "ApiRequestException for customer" + id
        );
    }


   @PostMapping
    void createNewCustomer(@Valid @RequestBody Customer customer){
        System.out.println("POST 请求。。。");
        System.out.println(customer);
   }

   @PutMapping
   void updateCustomer(@RequestBody Customer customer){
        System.out.println("UPDATE 请求");
        System.out.println(customer);
   }
   @DeleteMapping(path = "{customerId}")
    void deleteCustomer(@PathVariable("customerId") Long id){
        System.out.println("DELETE 请求，删除 Customer,其ID为"+ id);
   }
}